package paidaxing.blog.post.mapper;

import paidaxing.blog.post.entity.Tags;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 标签数据访问接口
 */
@Mapper
public interface TagsDao {

    /**
     * 根据ID查询标签
     * 
     * @param id 标签ID
     * @return 标签实体
     */
    Tags queryById(Long id);

    /**
     * 分页查询标签列表
     * 
     * @param offset 偏移量
     * @param limit  每页数量
     * @return 标签列表
     */
    List<Tags> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);

    /**
     * 统计标签总数
     * 
     * @return 标签总数
     */
    long count();

    /**
     * 插入标签
     * 
     * @param tags 标签实体
     * @return 影响行数
     */
    int insert(Tags tags);

    /**
     * 批量插入标签
     * 
     * @param entities 标签列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<Tags> entities);

    /**
     * 批量插入或更新标签
     * 
     * @param entities 标签列表
     * @return 影响行数
     */
    int insertOrUpdateBatch(@Param("entities") List<Tags> entities);

    /**
     * 更新标签
     * 
     * @param tags 标签实体
     * @return 影响行数
     */
    int update(Tags tags);

    /**
     * 根据ID删除标签
     * 
     * @param id 标签ID
     * @return 影响行数
     */
    int deleteById(Long id);

}